利用github action自动部署博客

利用github action自动部署博客

原理就是通过上传新文件后,触发该action,然后在服务器上下载该仓库代码,编译,将后续的文件直接push到hexo的静态文件库中即可

创建可以下载代码的密钥

如果github上已经保存有密钥,可以直接使用,如果没有密钥,那么需要生成一对

  • ssh-keygen -t rsa -b 4096 -f github-actions-deploy会在当前目录下,生成两个文件,github-actions-deploygithub-actions-deploy.pub,一个公钥,一个私钥
  • 将公钥保存到github账户下,自己账户->settings->SSH and GPG keys->生成新的ssh key,将.pub文件内容粘贴到里面,这就是公钥

创建git库

这里需要创建两个git库,一个用来保存博客的源码库,一个是编译后的静态文件的代码库,用来挂靠在github page上展示
源码库就是hexo的代码仓库,写的博客文章就保存在里面,设置为私有库

创建github action

  • 在blog的代码库中,点击仓库的settings->Secrets->将私钥存入,并设置好钥匙的命名,后续需要使用(例子中保存为HEXO_DEPLOY_KEY)
  • 点击action的tab,然后点击new workflow,将action的文件内容保存
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
name: HEXO CI

on: [push]

jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [10.x]

steps:
- uses: actions/checkout@v1

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}

- name: Configuration environment
env:
HEXO_DEPLOY_PRI: ${{secrets.HEXO_DEPLOY_KEY}}
run: |
mkdir -p ~/.ssh/
echo "$HEXO_DEPLOY_PRI" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com >> ~/.ssh/known_hosts
git config --global user.name "xxx"
git config --global user.email "xxx.com"
- name: Install dependencies
run: |
npm i -g hexo-cli
npm i
- name: Deploy hexo
run: |
hexo g -d
  • 这个文件,可以在本地clone blog仓库的时候,在.github/workflow/中看到